﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using KamLib;

namespace KamLib
{
    /// <summary>
    /// Указывает уникальный в приложении ID класса
    /// </summary>
    public class UilIDAttribute : Attribute
    {
        /// <summary>
        ///     ID - по которому можно однозначно найти экземпляр
        /// </summary>
        public string ID;

        public UilIDAttribute() { }
        public UilIDAttribute(string id)
        {
            ID = id;
        }

        public static string GetID(MemberInfo member)
        {
            var attr = member.GetAttribute<UilIDAttribute>();
            var lid = attr != null ? attr.ID ?? member.Name : member.Name;

            var dtype = member.DeclaringType;
            while (dtype != null)
            {
                attr = dtype.GetAttribute<UilIDAttribute>();
                if (attr != null)
                    lid = attr.ID + "." + lid;
                dtype = dtype.DeclaringType;
            }
            return lid;
        }
    }


    /// <summary>
    /// Дескриптор чего-либо
    /// </summary>
    public abstract class UilDescription : Attribute
    {
    }




}